import axios from 'axios'
import router from "@/router";
import {Message} from "element-ui";

// 创建一个新的axios对象
const request = axios.create({
    baseURL: process.env.VUE_APP_BASEURL,   // 后端的接口地址  ip:port
    timeout: 30000                          // 30s请求超时
});

// request 拦截器
request.interceptors.request.use(config => {
    config.headers['Content-Type'] = 'application/json;charset=utf-8'; // 设置请求头格式
    let user = JSON.parse(localStorage.getItem("xm-user") || '{}'); // 获取缓存的用户信息
    config.headers['authentication'] = user.token; // 设置请求头
    return config;
}, error => {
    console.log("请求错误:", error);
    return Promise.reject(error);
});

// response 拦截器
request.interceptors.response.use(
    response => {
        // 兼容服务端返回的字符串数据
        let res = response.data;
        if (response.status === 200) {
            if (typeof res === 'string') {
                res = res ? JSON.parse(res) : res;
            }
            return res; // 正确的返回数据
        }
    },
    error => {
        // 处理错误时确保返回一个Promise拒绝
        if (error.response) {
            const statusCode = error.response.status; // 获取状态码
            if (statusCode === 401) {
                router.push('/login'); // 未授权，重定向到登录页面
            } else if (statusCode === 403) {
                Message.error("您没有权限访问");
            } else {
                return Promise.reject(error);
            }
        }
    }
);

export default request;
